#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>

// 自定义信号处理函数
void handle_sigfpe(int signum) {
    printf("\nreceive signal %d: An arithmetic error occurred (possibly division by zero)\n", signum);
    
    printf("Execute custom error handling logic...\n");
    
    // 这里可以添加需要的清理工作
    printf("The program will exit safely in 3 seconds...\n");
    sleep(3);
    
    // 退出程序（退出状态为失败状态）
    exit(EXIT_FAILURE);
}

int main() {
    int a = 10;
    int b = 0;
    
    // 注册信号处理函数，处理 SIGFPE 信号
    signal(SIGFPE, handle_sigfpe);
    
    printf("Ready to perform the division operation: %d / %d\n", a, b);
    
    // 执行除以 0 操作，会触发除 0 异常
    int result = a / b;
    
    // 下面这行代码不会被执行，因为除以 0 会触发除 0 异常
    printf("the result is: %d\n", result);
    
    return 0;
}